<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>The source code</title>
  <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
  <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
  <style type="text/css">
    .highlight { display: block; background-color: #ddd; }
  </style>
  <script type="text/javascript">
    function highlight() {
      document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
    }
  </script>
</head>
<body onload="prettyPrint(); highlight();">
  <pre class="prettyprint lang-js"><span id='JUI-Date'>/**
</span> * 日期工具类
 * @class
 */
JUI.Date = {
<span id='JUI-Date-method-isLeapYear'>    /**
</span>     * 判断是否是闰年
     * @param year 年份
     * @return 闰年为true
     */
    isLeapYear: function (year) {
        return !!((year &amp; 3) == 0 &amp;&amp; (year % 100 || (year % 400 == 0 &amp;&amp; year)));
    }
<span id='JUI-Date-method-isDateStr'>    /**
</span>     * 是否是日期类型
     * @param dateStr 字符串日期
     * @return 是,true
     */
    , isDateStr: function (dateStr) {
        return !!this._parseDateStrToNum(dateStr);
    }
<span id='JUI-Date-method-getMonthDaysArr'>    /**
</span>     * 根据年份获取每月的天数
     * @param year 年份
     * @return 返回每个月的天数,数组形式
     */
    , getMonthDaysArr: function (year) {
        // 存放每月天数
        var month_days_arr = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
        // 二月份天数
        month_days_arr[1] = this.isLeapYear(year) ? 29 : 28;

        return month_days_arr;
    }
<span id='JUI-Date-method-getEndDate'>    /**
</span>     * 根据年月得到该月的最后一天
     * @param year 年份
     * @param month 月份
     * @return 返回该月最后一天
     */
    , getEndDate: function (year, month) {
        // 存放每月天数
        var month_days_arr = this.getMonthDaysArr(year);
        return month_days_arr[month - 1];
    }
<span id='JUI-Date-method-parse'>    /**
</span>     * 将字符串日期转换成Date类型
     *
     * @param dateStr 字符串日期,如:
     *  var s = &quot;2012-9-3 09:41:30&quot;;
     *  var s2 = &quot;2012-09-03 09:41:30&quot;;
     *  var s3 = &quot;9/3/2012 09:41:30&quot;;
     *  var s4 = &quot;2012-9-3&quot;;
     * @return Date类型日期
     */
    , parse: function (dateStr) {
        return new Date(this._parseDateStrToNum(dateStr));
    }
<span id='JUI-Date-method-_parseDateStrToNum'>    , _parseDateStrToNum: function (dateStr) {
</span>        return Date.parse(dateStr.replace(/-/g, &quot;/&quot;));
    }
<span id='JUI-Date-method-format'>    /**
</span>     * 格式化日期&lt;br&gt;
     * 使用方法:
     * &lt;code&gt;
     * var dateStr = JUI.Date.format(new Date(),'yyyy-MM-dd hh:mm:ss.S');
     * &lt;/code&gt;
     *
     * @param dateInstance Date实例
     * @param 格式化字符串,如&quot;yyyy-MM-dd&quot;,&quot;yyyy-MM-dd hh:mm:ss.S&quot;
     *
     * @return 返回格式化后的字符串
     */
    , format: function (dateInstance, pattern) {
        var o = {
            &quot;M+&quot;: dateInstance.getMonth() + 1,                 //月份    
            &quot;d+&quot;: dateInstance.getDate(),                    //日    
            &quot;h+&quot;: dateInstance.getHours(),                   //小时    
            &quot;m+&quot;: dateInstance.getMinutes(),                 //分    
            &quot;s+&quot;: dateInstance.getSeconds(),                 //秒    
            &quot;q+&quot;: Math.floor((dateInstance.getMonth() + 3) / 3), //季度    
            &quot;S&quot;: dateInstance.getMilliseconds()             //毫秒    
        };
        if (/(y+)/.test(pattern)) {
            pattern = pattern.replace(RegExp.$1, (dateInstance.getFullYear() + &quot;&quot;).substring(4 - RegExp.$1.length));
        }

        for (var k in o) {
            if (new RegExp(&quot;(&quot; + k + &quot;)&quot;).test(pattern)) {
                pattern = pattern.replace(RegExp.$1, (RegExp.$1.length == 1)
                    ? (o[k])
                    : ((&quot;00&quot; + o[k]).substring((&quot;&quot; + o[k]).length)));
            }
        }

        return pattern;
    }
};</pre>
</body>
</html>
